package pe.gob.onpe.ejb;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * InstitucionSolicitante entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "INSTITUCION_SOLICITANTE", schema = "SVENP", uniqueConstraints = {})
public class InstitucionSolicitante implements java.io.Serializable {

	private static final long serialVersionUID = 3299146265168579001L;
	
	private Long	institucionSolicitanteId;
	private String	nombre;
	private String	representante;
	private String	telefono;
	private Long	descripcioninstitucion;
	private Set<OficinaDespacho> oficinaDespachos = new HashSet<OficinaDespacho>(0);
	private Set<ProcesoElectoral> procesoElectorals = new HashSet<ProcesoElectoral>(0);

	// Constructors

	/** default constructor */
	public InstitucionSolicitante() {
	}

	/** minimal constructor */
	public InstitucionSolicitante(Long institucionSolicitanteId, String nombre) {
		this.institucionSolicitanteId = institucionSolicitanteId;
		this.nombre = nombre;
	}

	/** full constructor */
	public InstitucionSolicitante(Long institucionSolicitanteId, String nombre,
			String representante, String telefono, Long descripcioninstitucion,
			Set<OficinaDespacho> oficinaDespachos,
			Set<ProcesoElectoral> procesoElectorals) {
		this.institucionSolicitanteId = institucionSolicitanteId;
		this.nombre = nombre;
		this.representante = representante;
		this.telefono = telefono;
		this.descripcioninstitucion = descripcioninstitucion;
		this.oficinaDespachos = oficinaDespachos;
		this.procesoElectorals = procesoElectorals;
	}

	// Property accessors
	@Id
	@Column(name = "INSTITUCION_SOLICITANTE_ID", unique = true, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)
	public Long getInstitucionSolicitanteId() {
		return this.institucionSolicitanteId;
	}

	public void setInstitucionSolicitanteId(Long institucionSolicitanteId) {
		this.institucionSolicitanteId = institucionSolicitanteId;
	}

	@Column(name = "NOMBRE", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "REPRESENTANTE", unique = false, nullable = true, insertable = true, updatable = true)
	public String getRepresentante() {
		return this.representante;
	}

	public void setRepresentante(String representante) {
		this.representante = representante;
	}

	@Column(name = "TELEFONO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getTelefono() {
		return this.telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	@Column(name = "DESCRIPCIONINSTITUCION", unique = false, nullable = true, insertable = true, updatable = true, precision = 5, scale = 0)
	public Long getDescripcioninstitucion() {
		return this.descripcioninstitucion;
	}

	public void setDescripcioninstitucion(Long descripcioninstitucion) {
		this.descripcioninstitucion = descripcioninstitucion;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "institucionSolicitante")
	public Set<OficinaDespacho> getOficinaDespachos() {
		return this.oficinaDespachos;
	}

	public void setOficinaDespachos(Set<OficinaDespacho> oficinaDespachos) {
		this.oficinaDespachos = oficinaDespachos;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "institucionSolicitante")
	public Set<ProcesoElectoral> getProcesoElectorals() {
		return this.procesoElectorals;
	}

	public void setProcesoElectorals(Set<ProcesoElectoral> procesoElectorals) {
		this.procesoElectorals = procesoElectorals;
	}

}